/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.manager;

import com.brain.conf.dto.MonedaDto;
import com.brain.core.dto.EmpresaDto;
import com.brain.core.dto.EmpresaMonedaDto;
import com.brain.core.exception.DAOException;
import com.brain.core.hibernate.dao.DAOGenerico;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

/**
 *
 * @author Indra
 */
@Service
public class EmpresaMonedaManager extends ComunManager<EmpresaMonedaDto> implements Serializable {

    private static Logger logger = Logger.getLogger(EmpresaMonedaManager.class);
    private Long idEntidad = 165L;
    @Resource
    private DAOGenerico<EmpresaMonedaDto> springHibernateDao;
    @Resource
    private RecursosManager recursosManager;

    public List<EmpresaMonedaDto> obtenerTodosPorEmpresa(EmpresaDto empresaDto) throws DAOException {
        List<Object> listaParametros = new ArrayList<Object>();
        String hqsql = "select o from EmpresaMonedaDto as o where ";
        hqsql += " o.empresaDto.id = ? ";
        listaParametros.add(empresaDto.getId());

        return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }

    /**
     * Retorna una Empresa Moneda
     *
     * @param id ID Empresa Moneda
     * @return Empresa Moneda
     * @throws DAOException
     */
    public EmpresaMonedaDto obtenerPorId(Long id) throws DAOException {
        return springHibernateDao.obtenerDtoPorId(EmpresaMonedaDto.class, id);
    }

    
    /**
     * Metodo para agregar o eliminar Empresa moneda
     * @param monedaDto
     * @param empDto
     * @throws DAOException 
     */
    public void agregarEliminarEmpresaMoneda(MonedaDto monedaDto, EmpresaDto empDto) throws DAOException {
        String mensajeTrx = "";
        int verificarExistencia = 0;
        List<EmpresaMonedaDto> listaEmpMoneda = new ArrayList<EmpresaMonedaDto>();
        listaEmpMoneda = this.obtenerTodosPorEmpresaMoneda(monedaDto, empDto);
        verificarExistencia = listaEmpMoneda.size();
        EmpresaMonedaDto empresaMonedaDto = new EmpresaMonedaDto();
        if (verificarExistencia == 0) {
            empresaMonedaDto.setEmpresaDto(empDto);
            empresaMonedaDto.setMonedaDto(monedaDto);
            this.nuevo(empresaMonedaDto);
        } else {
            empresaMonedaDto = listaEmpMoneda.get(0);
            this.eliminar(empresaMonedaDto);
        }


    }

    public List<EmpresaMonedaDto> obtenerTodosPorEmpresaMoneda(MonedaDto monedaDto, EmpresaDto empresaDto) throws DAOException {
        List<Object> listaParametros = new ArrayList<Object>();
        String hqsql = "select o from EmpresaMonedaDto as o where ";
        hqsql += " o.empresaDto.id = ? ";
        listaParametros.add(empresaDto.getId());
        hqsql += " and (o.monedaDto.id = ? )";
        listaParametros.add(monedaDto.getId());

        return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }
}
